	.model small

        .stack 100h     
        
        .data           
mess	db 'Hello, world!$'
        
        .code           
        
	.startup

	mov ax,8000h
	mov bx,8000h
	add ax,bx
	mov ax,8080h
	add al,ah
	sal bx,1



	mov ax,8866h
	add al,ah
	add bl,al
	add ds:[12h],al
	add [bp],ah
	add [bp+12h],al
	add ds:[1234h],ah
	add al,ds:[1234h]
	add ax,bx
	add cx,es:[bx]
	add dx,ds:[2211h]
	add [bp],bx
	add ss:[123h],bx

	add cl,12h
	add cx,1234h
	add byte ptr ds:[bx+1234h],12h
	add byte ptr ds:[bx+1fh],12h
	add al,12h
	add ax,8888h
	add word ptr ds:[bx+2233h],8888h
	add word ptr es:[bp+1h],2222h
	add word ptr ss:[bp],666h


	sahf
	lahf
	mov cx,7773h
	push cx
	popf
	pushf

	mov word ptr [bx],0ddbbh
	mov word ptr [bx+2h],3333h

	lea di,[bx]
	lea di,es:[1234h]
	lea di,[bp+12h]
	lea di,[bp]
	lea di,[bp+1234h]

	les di,[bx]
	lds si,[bx]

	xlat
	xlat ds:[123h]
	xlat mess

	xchg al,bl
	xchg cx,dx
	xchg [bp],bl
	xchg [bp],cx
	xchg ax,cx

	push ax
	push cx
	push ds:[1234h]
	push [bp]
	push [bp+1234h]
	push [bp+di]
	push [bp+di+12h]
	push cs
	push ds
	push es
	push ss
	pop bx
	pop dx
	pop [bp]
	pop ds
	pop es
	pop ss


	mov al,bl
	mov dx,cx
	mov cx,dx
	mov cl,ds:[1234h]
	mov cx,[di+1234h]
	mov [di+1266h],bl
	mov [bx+1234h],ax
	mov cl,0ffh
	mov dx,011ffh

	mov byte ptr [bp],0ffh
	mov byte ptr ds:[12h],0ffh
	mov byte ptr ds:[1234h],0ffh
	mov word ptr [bp],0ffh
	mov byte ptr [bx+10h],0ffh
	mov byte ptr [bx+1000h],0ffh
	mov word ptr [bx+2233h],011ffh

	mov byte ptr [di],0ffh
	mov byte ptr ds:[di+12h],0ffh
	mov byte ptr ds:[bp+di+1234h],0ffh
	mov word ptr [si],0ffh
	mov byte ptr [si+10h],0ffh
	mov byte ptr [bp+si+1000h],0ffh
	mov word ptr [bx+di+2233h],011ffh

	mov ds,ax
	mov ax,ds
	mov ds,[bx]
	mov ds,[bp]
	mov ds,ds:[10h]
	mov ds,ds:[1000h]
	mov ds,[bp+10h]
	mov ds,[bp+1000h]
	mov [bx],ds
	mov al,01fh
	mov ax,0ffffh

	mov al,ds:[12h]
	mov ss:[12h],al
	mov al,cs:[1234h]
	mov es:[2345h],al

	mov ax,ds:[12h]
	mov ss:[12h],ax
	mov ax,cs:[124h]
	mov es:[2345h],ax


	aas
	das
	cmp bl,bh
	cmp cx,dx
	cmp bl,[bx]
	cmp bx,[bx]
	cmp [bx],bl
	cmp [bx],bx
	cmp bl,0ffh
	cmp cx,011ffh
	cmp byte ptr[bx],0ffh
	cmp word ptr[bx],011ffh
	cmp al,0ffh
	cmp ax,01122h
	cmpsb
	cmpsw

	neg bl
	neg cx
	neg byte ptr[bx]
	neg word ptr[bx]

	mul bl
	mul cx
	mul byte ptr[bx]
	mul word ptr[bx]

	imul bl
	imul cx
	imul byte ptr[bx]
	imul word ptr[bx]

	aam

	div bl
	div cx
	div byte ptr[bx]
	div word ptr[bx]

	idiv bl
	idiv cx
	idiv byte ptr[bx]
	idiv word ptr[bx]

	aad
	cbw
	cwd

	and bl,bh
	and cx,dx
	and bl,[bx]
	and bx,[bx]
	and [bx],bl
	and [bx],bx
	and bl,0ffh
	and cx,011ffh
	and byte ptr[bx],0ffh
	and word ptr[bx],011ffh
	and al,0ffh
	and ax,01122h

	test bl,bh
	test cx,dx
	test bl,[bx]
	test bx,[bx]
	test bl,0ffh
	test cx,011ffh
	test byte ptr[bx],0ffh
	test word ptr[bx],011ffh
	test al,0ffh
	test ax,01122h

	or bl,bh
	or cx,dx
	or bl,[bx]
	or bx,[bx]
	or [bx],bl
	or [bx],bx
	or bl,0ffh
	or cx,011ffh
	or byte ptr[bx],0ffh
	or word ptr[bx],011ffh
	or al,0ffh
	or ax,01122h

	xor bl,bh
	xor cx,dx
	xor bl,[bx]
	xor bx,[bx]
	xor [bx],bl
	xor [bx],bx
	xor bl,0ffh
	xor cx,011ffh
	xor byte ptr[bx],0ffh
	xor word ptr[bx],011ffh
	xor al,0ffh
	xor ax,01122h

	not bl
	not bx
	not byte ptr [di]
	not word ptr [di]

	sal bl,1
	sal bx,1
	sal byte ptr [di],1
	sal word ptr [di],1
	sal bl,cl
	sal bx,cl
	sal byte ptr [di],cl
	sal word ptr [di],cl

	sar bl,1
	sar bx,1
	sar byte ptr [di],1
	sar word ptr [di],1
	sar bl,cl
	sar bx,cl
	sar byte ptr [di],cl
	sar word ptr [di],cl

	shr bl,1
	shr bx,1
	shr byte ptr [di],1
	shr word ptr [di],1
	shr bl,cl
	shr bx,cl
	shr byte ptr [di],cl
	shr word ptr [di],cl


	rol bl,1
	rol bx,1
	rol byte ptr [di],1
	rol word ptr [di],1
	rol bl,cl
	rol bx,cl
	rol byte ptr [di],cl
	rol word ptr [di],cl

	ror bl,1
	ror bx,1
	ror byte ptr [di],1
	ror word ptr [di],1
	ror bl,cl
	ror bx,cl
	ror byte ptr [di],cl
	ror word ptr [di],cl

	rcl bl,1
	rcl bx,1
	rcl byte ptr [di],1
	rcl word ptr [di],1
	rcl bl,cl
	rcl bx,cl
	rcl byte ptr [di],cl
	rcl word ptr [di],cl

	rcr bl,1
	rcr bx,1
	rcr byte ptr [di],1
	rcr word ptr [di],1
	rcr bl,cl
	rcr bx,cl
	rcr byte ptr [di],cl
	rcr word ptr [di],cl

	movsb
	movsw
	cmpsb
	cmpsw
	scasb
	scasw
	lodsb
	lodsw
	stosb
	stosw

	rep movsb
	rep movsw
	;rep insb
	;rep cmpsw
	;rep scasb
	;rep scasw
	rep lodsb
	rep lodsw
	rep stosb
	rep stosw

	repe cmpsb
	repe cmpsw
	repne cmpsb
	repne cmpsw
	repe scasb
	repe scasw
	repne scasb
	repne scasw

	ja ccc
	jae ccc
	jb ccc
	jbe ccc
	jc ccc
	je ccc
	jg ccc
	jge ccc
	jl ccc
	jle ccc
	jna ccc
	jnae ccc
	jnb ccc
	jnbe ccc
	jnc ccc
	jne ccc
	jng ccc
	jnge ccc
	jnl ccc
	jnle ccc
	jno ccc
	jnp ccc
	jns ccc
	jnz ccc
	jo ccc
	jp ccc
	jpe ccc
	jpo ccc
	js ccc
	jz ccc
	jcxz ccc

	in al,10h
	in ax,10h
	in al,dx
	in ax,dx
	out 10h,al
	out 10h,ax
	out dx,al
	out dx,ax

	stc
	clc
	cmc
	std
	cld
	sti
	cli
	hlt
	wait
	nop
	int 03h
	int 10h


ccc:	nop
	.exit
        end             
